package com.dunshan;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

/**
 * @author LiWen
 * @version 1.0
 * @Date: 2021-05-04 21:18
 * @Description: 自定义java
 */
public class JmeterSdGroup extends AbstractJavaSamplerClient {
    private String num1;
    private String num2;

    private String resultData;

    /**
     * 设置可用参数及的默认值
     */
    @Override
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("num1", "");
        params.addArgument("num2", "");
        return params;
    }

    /**
     * 每个线程测试前执行一次，做一些初始化工作；
     */
    @Override
    public void setupTest(JavaSamplerContext arg0) {
    }

    @Override
    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        num1 = javaSamplerContext.getParameter("num1");
        num2 = javaSamplerContext.getParameter("num2");
        SampleResult sr = new SampleResult();
        sr.setSampleLabel("Java请求哦");
        try {
            sr.sampleStart();// jmeter 开始统计响应时间标记
            NumberAdd test = new NumberAdd();
            // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
            resultData = String.valueOf(test.sum(Integer.parseInt(num1), Integer.parseInt(num2)));
            if (resultData != null && resultData.length() > 0) {
                sr.setResponseData("结果是：" + resultData, null);
                sr.setDataType(SampleResult.TEXT);
            }
            sr.setSuccessful(true);
        } catch (Throwable e) {
            sr.setSuccessful(false);
            e.printStackTrace();
        } finally {
            sr.sampleEnd();// jmeter 结束统计响应时间标记
        }
        return sr;
    }

    /**
     * 测试结束时调用；
     */
    @Override
    public void teardownTest(JavaSamplerContext arg0) {
    }
}


//public Arguments getDefaultParameters();设置可用参数及的默认值；
//public void setupTest(JavaSamplerContext arg0)：每个线程测试前执行一次，做一些初始化工作；
//public SampleResult runTest(JavaSamplerContext arg0)：开始测试，从arg0参数可以获得参数值；
//public void teardownTest(JavaSamplerContext arg0)：测试结束时调用；